//author:jxx
//此处是对表单的方法，组件，权限操作按钮等进行任意扩展(方法扩展可参照SellOrder.js)
let extension = {
  components: {//动态扩充组件或组件路径
    //表单header、content、footer对应位置扩充的组件
    gridHeader: '',//{ template: "<div>扩展组xx件</div>" },
    gridBody: '',
    gridFooter: '',
    //选择属性弹出框
    modelHeader: () => import('../mall/product/Product_Attr.vue'),
    modelBody: () => import('../mall/product/addPackageTicket.vue'),
    modelFooter: () => import('../mall/product/fromTable.vue')
  },
  data () {
    return {
      // 商品管理表 记录
      del_list: [],
      rowId: {},//id
      typename: {},
      type: ''
    }
  },
  buttons: { view: [], box: [], detail: [] },//扩展的按钮
  methods: {//事件扩展
    // 循环表单并返回数据
    getFormOption (field) {
      let option;
      this.editFormOptions.forEach(x => {
        x.forEach(item => {
          if (item.field == field) {
            option = item;
          }
        })
      })
      return option;
    },
    onInit () {
      //点击单元格编辑与结束编辑(默认是点击单元格编辑，鼠标离开结束编辑)
      this.detailOptions.clickEdit = true;
      // 弹框宽度
      this.boxOptions.width = 1000
      // 内容超出后自动换行
      this.textInline = true;
      //缓存当前对象
      this.$store.getters.data().reportPrice = this;

      let costpriceOption = this.getFormOption('costprice'); //成本价
      costpriceOption.onInput = (val) => {
        this.$refs.modelFooter.tableData.forEach((item) => {
          item.originalPrice = val ? val : 0;
        })
      }
    },
    rowClick ({ row, column, event }) { //查询界面table点击行选中当前行
      this.$refs.table.$refs.table.toggleRowSelection(row);
      this.typename = row.typename
      return true;
    },
    searchBefore (param) { //查询ViewGird表数据前,param查询参数
      //添加其他查询条件,也可以在后台扩展中写查询条件
      let wheres = [
      {
        'name': 'typeParentID',
        'value': 'TaoPiao',
        'displayType': 'text'
      },{
        'name': 'proauditStatus',
        'value': '1',
        'displayType': 'text'
      }]
      param.wheres.push(...wheres)
      return true;
    },
    // 点击编辑/新建按钮弹出框后
    modelOpenBefore (row) {
      if (row && row.type) {
        // row.type = row.type.split(',')
        this.type = row.type
      }
    },
    modelOpenAfter (row) {
      if (this.$refs.modelFooter) {
        this.$refs.modelFooter.resetSearch()
      }
      if (this.$refs.modelBody) {
        this.$refs.modelBody.resetSearch()
      }
      let typename = this.getFormOption('typename');//产品类型名称
      let type = this.getFormOption('type');//产品类型名称
      if (this.currentAction == "Add") {
        type.hidden = false
        type.required = true
        typename.hidden = true
        // 创建选择属性按钮
        type.extra = {
          icon: "ios-search",//显示图表
          text: "选择属性",//显示文本
          style: "color:green;",//指定样式
          click: item => {  //触发事件
            if (this.editFormFileds.name) {
              this.$refs.modelHeader.reset();
              this.$refs.modelHeader.open("TiaoPiao");
            } else {
              this.$Message.error("请先填写产品名称");
            }
          }
        }

      } else {
        type.hidden = true
        type.required = false
        type.disabled = false
        typename.hidden = false
        // 将开始日期 和 结束日期合并为起止日期
        this.editFormFields.timeContainer = [row.effectiveStartDate, row.effectiveEndDate]
        // 去除选择属性按钮
        type.extra = {}
        this.rowId = row.id
        if (this.$refs.modelFooter) {
          this.$refs.modelFooter.dataTable()
        }
      }
    },
    resetAddFormAfter () { //重置新建表单后的内容
      // 产品类型名称初始为套票  产品类型初始为TaoPiao
      this.del_list = []
      this.rowId = {}//id
      // // 清空从表数据
      if (this.$refs.modelFooter) {
        this.$refs.modelFooter.resetSearch()
      }
      if (this.$refs.modelBody) {
        this.$refs.modelBody.resetSearch()
      }
      return true;
    },
    resetUpdateFormAfter () { //重置编辑表单后的内容
      // 产品类型名称初始为套票  产品类型初始为TaoPiao
      this.del_list = []
      this.rowId = {}//id
      // // 清空从表数据
      if (this.$refs.modelFooter) {
        this.$refs.modelFooter.resetSearch()
      }
      if (this.$refs.modelBody) {
        this.$refs.modelBody.resetSearch()
      }
      return true;
    },
    addBefore (formData) { //新建保存前formData为对象，包括明细表
      return this.veriFromTable(formData)
    },
    updateBefore (formData) { //编辑保存前formData为对象，包括明细表、删除行的Id
      return this.veriFromTable(formData)
    },
    // 保存前编辑
    veriFromTable (formData) {
      // 切割时间
      let timeContainer = formData.mainData.timeContainer.split(",")
      if (timeContainer.length > 0 && timeContainer[0] != "") {
        formData.mainData.effectiveStartDate = timeContainer[0]
        formData.mainData.effectiveEndDate = timeContainer[1]
      } else {
        this.$Message.error("请选择有效起止日期！")
      }
      let arr = []
      if (this.del_list) {
        arr = this.del_list.filter((v) => this.$refs.modelFooter.tableData.every((val) => val.goodId != v.goodId))
      }
      let a = []
      arr.forEach(item => {
        a.push(item.goodId)
      })
      formData.delKeys = a
      formData.detailData = this.$refs.modelFooter.tableData
      formData.extra = this.$refs.modelFooter.ticketTableData
      Object.keys(formData.mainData).forEach(_ => {
        formData.mainData[_] = formData.mainData[_] == null ? '' : formData.mainData[_]
      })
      if (this.type) {
        formData.mainData.type = this.type
      }
      return true
    },
  }
};
export default extension;
